/**
 * 确认并提交订单.<br/>
 *
 * @author fsl-gonglong-20151109.
 *  fsl-fzh-20151120.修改添加字段
 */
$(function () {

    commTemplUtil.initPage();

    // 收货人资料
    setReceiverInfoList();
    // 发票
    setInvoiceList();
    // 店铺商品.
    setStoreGoodsList();
    
});

/**
 * 设置"收货人资料以及送货方式"列表.<br/>
 *
 * @author fsl-gonglong-20151109.
 *
 */
function setReceiverInfoList() {

    $.ajax({
        url : PAGE_CONFIG.requestUrl.getReceiverInfo,
        type : "get",
        dataType : "json",
        data : {
            userid : PAGE_DATA.userid || ''
        },
        success : function (result) {
            var dataList = $.extend([], result.data);
            renderReceiverInfo(dataList);
        },
        error : function (result) {
            commTemplUtil.showErrorDialog({
                title : "提示！",
                message : "'收货人资料'获取失败！",
                ok_txt : "确定"
            });
        }
    });
    
    // "收货人资料以及送货方式"--删除
    bindReceiverDel();
    
    // 已有"收货地址"
    $("#addr-box").on("click", "input[name='addr']", function(){
        $("#add-address-box").hide();
        
    });
    
    // 使用新的收货地址, 
    $("#user_new_address").on("click", function(){
        $("#add-address-box").show();
    });
    
    addNewReceiveAddr();
};

/**
 * 渲染"收货人资料以及送货方式"列表.<br/>
 *
 * @param data {array} 收货人资料列表.
 *
 * @author fsl-gonglong-20151109.
 *
 */
function renderReceiverInfo(data) {

    var addrTempl = _.template($("#addr-templ").html());
    var addrHtml = addrTempl(data);
    $("#addr-box").html(addrHtml);
    
    $("#addr-box").find("input[name='addr']").first().click();
};

/**
 * "收货人资料以及送货方式"--删除--绑定事件.<br/>
 *
 * @author fsl-gonglong-20151109.
 *
 */
function bindReceiverDel() {

$("#addr-box").on("click", ".sel-del", function () {

        var addrId = $(this).attr("addr-id");
        var thisAddr = $(this).parents(".choose-address");
        
        $.ajax({
            url : PAGE_CONFIG.requestUrl.delReceiverInfo,
            type : "delete",
            dataType : "json",
            data : {
                userid : PAGE_DATA.userid || '',
                addrid : addrId || '',
                _token : COMM_DATA.csrfToken
            },
            success : function (result) {
                thisAddr.remove();
            },
            error : function (result) {
                commTemplUtil.showErrorDialog({
                    title : "提示！",
                    message : "'删除'失败！",
                    ok_txt : "确定"
                });
            }
        });

    });
};

/**
 * "收货人资料以及送货方式"--使用新的收货地址.<br/>
 *
 * @author fsl-gonglong-20151109.
 *
 */
function addNewReceiveAddr(){
    // rules
    var addrForm = $("#add-address-form").validate({
        rules : {
            receiver : 'required',
            district : 'required',
            detail_addr : 'required',
            country:"required",
            mob_tel : {
                required : true,
                mobileCHINA : true
            },
            fix_tel: {
                required : true,
                digits:true
            }
        },
        messages : {
            country:"必选项",
            mob_tel : {
                mobileCHINA : "请输入合法的手机号码!"
            }
        }
    });
    
    // 保存收货信息
    $("#save-addr-btn").on("click", function() {
        var flag = addrForm.form();
        
        if (flag) {
            
            var formObj = $("#add-address-form");
            var name = formObj.find("#receiver").val();
            var distr = formObj.find("#district").val();
            var addr = formObj.find("#detail_addr").val();
            var mobTelVal = formObj.find("#mob_tel").val();
            var fixTelVal = formObj.find("#fix_tel").val();
            var province = formObj.find("#province").val();
            var city = formObj.find("#city").val();
            var country = formObj.find("#country").val();
            
            $.ajax({
                url : PAGE_CONFIG.requestUrl.addReceiverInfo,
                type : "post",
                dataType : "json",
                data : {
                    userid : PAGE_DATA.userid || '',
                    receieName : name || '',  // 收货人姓名
                    province:province||'', 
                    city:city||'', 
                    country:country||'',
                    detailAddr : addr || '',  // 详细地址
                    mobTel : mobTelVal || '',      // 手机号码
                    fixTel : fixTelVal || '',      // 固定电话
                    _token : COMM_DATA.csrfToken
                },
                success : function (result) {
                    var dataList = $.extend([], result.data);
                    renderReceiverInfo(dataList);
                },
                error : function (result) {
                    commTemplUtil.showErrorDialog({
                        title : "提示！",
                        message : "'新增收货地址'失败！",
                        ok_txt : "确定"
                    });
                }
            });
        }
    });
    
};

/**
 * 设置"发票信息"列表.<br/>
 *
 * @author fsl-gonglong-20151109.
 *
 */
function setInvoiceList() {

    $.ajax({
        url : PAGE_CONFIG.requestUrl.getInvoiceInfo,
        type : "get",
        dataType : "json",
        data : {
            userid : PAGE_DATA.userid || ''
        },
        success : function (result) {
            var dataList = $.extend([], result.data);
            renderInvoiceList(dataList);
        },
        error : function (result) {
            commTemplUtil.showErrorDialog({
                title : "提示！",
                message : "'发票信息'获取失败！",
                ok_txt : "确定"
            });
        }
    });
    
    // 已有"发票信息"
    $("#invoice-box").on("click", "input[name='invoice-item']", function(){
        $("#add-invoice-box").hide();
        
    });
    
    // 删除-发票;
    bindInvoiceDel();
    
    // 使用新的 发票信息, 
    $("#user_new_invoice").on("click", function(){
        $("#add-invoice-box").show();
        $("#comm-invoice").click();
    });
    
    // 普通发票 / 增值税发票 切换
    $("#add_invoice_form").find("input[name='invoice']").on("click", function(){
        var typeVal = $(this).val() || '';
        $("#sel-invoice-" + typeVal).show().siblings().hide();
    });

    // 初始化-收票人省份
    var addrTemplObj = _.template($("#addr-option-templ").html());
	
    $.ajax({
		url : PAGE_CONFIG.requestUrl.addrProvince,
		type : 'get',
		dataType : 'json',
		success : function (result) {
			var datas = $.extend([], result.data);
			var tmplObjHtml = addrTemplObj(datas);
			$("#province").html(tmplObjHtml);
		},
		error : function (xhr, status, error) {
			var tmplObjHtml = addrTemplObj([]);
			$("#province").html(tmplObjHtml);
		}
	});
	$("#province").on("change", function () {
	    var code = $(this).val();
	    renderAddrCity(code);
	});

	$("#city").on("change", function () {
	    var code = $(this).val();
	    renderAddrCounty(code);
	});
	
	function renderAddrCity(provinceCode) {

	// 市
	$.ajax({
		url : PAGE_CONFIG.requestUrl.addrCity,
		type : 'post',
		dataType : 'json',
		data : {
			code : provinceCode,
			_token : COMM_DATA.csrfToken
		},
		success : function (result) {
			var datas = $.extend([], result.data);
			var tmplObjHtml = addrTemplObj(datas);
			$("#city").html(tmplObjHtml);

		},
		error : function (xhr, status, error) {
			var tmplObjHtml = addrTemplObj([]);
			$("#city").html(tmplObjHtml);
		}
	});
	
	$("#city").empty().html(addrTemplObj([]));
	$("#country").empty().html(addrTemplObj([]));
};


function renderAddrCounty(cityCode) {
	// 区/县
	$.ajax({
		url : PAGE_CONFIG.requestUrl.addrCounty,
		type : 'post',
		dataType : 'json',
		data : {
			code : cityCode,
			_token : COMM_DATA.csrfToken
		},
		success : function (result) {
			var datas = $.extend([], result.data);
			var tmplObjHtml = addrTemplObj(datas);
			$("#country").html(tmplObjHtml);

		},
		error : function (xhr, status, error) {
			var tmplObjHtml = addrTemplObj([]);
			$("#country").html(tmplObjHtml);
		}
	});
};   
    // 普通发票-验证规则
    var invoiceForm_0 = $("#sel-invoice-0").validate({
        rules: {
            company_name : 'required' // 单位名称
        }
    });
    
    // 增值税发票-验证规则
    var invoiceForm_1 = $("#sel-invoice-1").validate({
        rules: {
            company_name : 'required', // 单位名称
            taxpayer_code : 'required',
            regist_addr : 'required',
            regist_tel : 'required',
            bank : 'required',
            bankCard : 'required',
            receiver_name : 'required',
            mobile : {
                required : true,
                mobileCHINA : true
            },
            province : 'required',
            detail_addr : 'required',
        },
        messages : {
            mobile : {
                mobileCHINA : "请输入合法的手机号码!"
            }
        }
    });
    
    
    // 保存发票信息
    $("#save-invoice-btn").on("click", function () {
        
        // 0-普通发票, 1-增值税发票;
        var type = $("#add_invoice_form").find("input[name='invoice']:checked").val();

        var invoiceTypes = {
            0 : invoiceForm_0,
            1 : invoiceForm_1
        };
        
        var chkFlg = invoiceTypes[type].form();
        
        if (chkFlg) {
            
            var invoice_0 = $("#sel-invoice-0");
            var invoice_1 = $("#sel-invoice-1");
            
            // 发票抬头, 0-个人, 1-单位;
            var titleVal =  invoice_0.find("input[name='category']:checked").val() || '';
            // 单位名称
            var companyNameVal = $("#sel-invoice-" + type).find("input[name='company_name']").val() || '';
            // 发票内容
            var contentVal = $("#detail_" + type).val() || '';
            // 自动保存发票信息, 
            var autoSaveVal = invoice_0.find("input[name='auto-save']").prop("checked");
            
            // 纳税人识别码
            var taxpayerCodeVal = invoice_1.find("#taxpayer_code").val() || '';
            // 注册地址
            var registAddrVal = invoice_1.find("input[name='regist_addr']").val() || '';
            // 注册电话
            var registTelVal = invoice_1.find("input[name='regist_tel']").val() || '';
            // 开户银行
            var bankVal = invoice_1.find("input[name='bank']").val() || '';
            // 银行账户
            var bankCardVal = invoice_1.find("input[name='bankCard']").val() || '';
            // 收票人姓名
            var receiverNameVal = invoice_1.find("input[name='receiver_name']").val() || '';
            // 收票人手机
            var mobileVal = invoice_1.find("input[name='mobile']").val() || '';
            // 收票人省份
            var provinceVal = invoice_1.find("[name='province']").val() || '';
            // 详细地址
            var detailAddrVal = invoice_1.find("input[name='detail_addr']").val() || '';
            
            var defaultData = {
                userid : PAGE_DATA.userid || '',
                invoiceType : type, // 发票类型: 0-普通发票, 1-增值税发票;
                companyName : companyNameVal, // 单位名称
                content : contentVal, // 发票内容: 1-明细;
                _token : COMM_DATA.csrfToken,
            };
            
            // 普通发票
            var invoiceData_0 = {
                invoiceTitle : titleVal, // 发票抬头:  0-个人, 1-单位;
                autoSave : autoSaveVal, // 自动保存发票信息
            };
            
            // 增值税发票
            var invoiceData_1 = {
                taxpayerCode : taxpayerCodeVal, // 纳税人识别码
                registAddr : registAddrVal, // 注册地址
                registTel : registTelVal, // 注册电话
                bank : bankVal, // 开户银行
                bankCard : bankCardVal, // 银行账户
                receiverName : receiverNameVal, // 收票人姓名
                mobile : mobileVal, // 收票人手机
                province : provinceVal, // 收票人省份
                detailAddr : detailAddrVal, // 详细地址
            };
            
            var tmpData = null;
            if(type == '0'){
                tmpData = $.extend(defaultData, invoiceData_0);
            } else {
                tmpData = $.extend(defaultData, invoiceData_1);
            }
            
            $.ajax({
                url : PAGE_CONFIG.requestUrl.addInvoiceInfo,
                type : "post",
                data : tmpData,
                success : function (result) {
                    
                   var dataList = $.extend([], result.data);
                   renderInvoiceList(dataList);
                   
                },
                error : function (result) {
                    commTemplUtil.showErrorDialog({
                        title : "提示！",
                        message : "'发票信息'保存失败！",
                        ok_txt : "确定"
                    });
                }
            });

        }

    });
};


/**
 * 渲染"发票信息"列表.<br/>
 *
 * @param data {array} "发票信息"列表.
 *
 * @author fsl-gonglong-20151109.
 *
 */
function renderInvoiceList(data) {

    var invoiceTempl = _.template($("#invoice-templ").html());
    var invoiceHtml = invoiceTempl(data);
    $("#invoice-box").html(invoiceHtml);
    
    $("#invoice-box").find("input[name='invoice-item']").first().click();
    
};


/**
 * "发票信息"--删除--绑定事件.<br/>
 *
 * @author fsl-gonglong-20151109.
 *
 */
function bindInvoiceDel() {

    $("#invoice-box").on("click", ".sel-del", function () {

        var invoiceId = $(this).attr("invoice-id");
        var thisInvoice = $(this).parents(".choose-address");

        $.ajax({
            url : PAGE_CONFIG.requestUrl.delInvoiceInfo,
            type : "delete",
            dataType : "json",
            data : {
                userid : PAGE_DATA.userid || '',
                invoiceid : invoiceId || '',
                _token : COMM_DATA.csrfToken
            },
            success : function (result) {
                thisInvoice.remove();
            },
            error : function (result) {
                commTemplUtil.showErrorDialog({
                    title : "提示！",
                    message : "'删除'失败！",
                    ok_txt : "确定"
                });
            }
        });

    });
};

/**
 * 设置"店铺商品信息"列表.<br/>
 *
 * @author fsl-gonglong-20151109.
 *
 */
function setStoreGoodsList() {
    $.ajax({
        url : PAGE_CONFIG.requestUrl.getShopCartInfoC17,
        type : "get",
        dataType : "json",
        data : {
            userid : PAGE_DATA.userid || ''
        },
        success : function (result) {
            var dataList = $.extend([], result.data.storeList);
            
            // 商店列表.
            renderStoreGoods(dataList);
            // 订单商品总额 
            $("#shop-cart-total").html(result.data.totalPrice || 0.00);
            // 返回购物车 
            $("#back-shop-cart").attr("href" ,result.data.shopCart || "javascript:void(0);");
            // 下单完成并支付
            $("#sub-order-btn").on("click", function(){
                
                var formObj = $("#new-order-form").empty();
                var addr = $("#addr-box").find("input[name='addr']:checked").clone();
                var invoice = $("#invoice-box").find("input[name='invoice-item']:checked").clone();
                var textAreas = $("#store-box").find("textarea[class='sel-text']").clone();
                var token = $("<input type='text' name='_token'/ >").val(COMM_DATA.csrfToken || '');
                var buy = $("<input type='text' name='buy'/ >").val(PAGE_DATA.buy || '');
                
                formObj.append(addr).append(invoice).append(textAreas);
                formObj.append(token).append(buy).append($("#c17_store_id").clone()).submit();
                
            });
            
        },
        error : function (result) {
            commTemplUtil.showErrorDialog({
                title : "提示！",
                message : "'店铺商品信息'获取失败！",
                ok_txt : "确定"
            });
        }
    });
};

/**
 * 渲染"店铺商品信息"列表.<br/>
 *
 * @author fsl-gonglong-20151109.
 *
 */
function renderStoreGoods(data) {

    var storeTempl = _.template($("#store-templ").html());
    var storeHtml = storeTempl(data);
    $("#store-box").html(storeHtml);
    
    // storeId = '';
    var storeIdAry = [];
    for(var i = 0, len = data.length; i < len; i++) {
        storeIdAry.push(data[i].storeid);
    }
    var storeIds = storeIdAry.join(",");
    $("<input id='c17_store_id' name='store_ids' type='hidden'/>").val(storeIds).appendTo($("body"));
};